package com.yc.cloud.admin.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import lombok.Data;

/**
 * SIP信令服务器API配置属性
 *
 * @author kinggu
 * @since 2025-09-09
 */
@Data
@Component
@ConfigurationProperties(prefix = "custom.sip-server")
public class SipServerProperties {

    /** 协议，默认 http */
    private String scheme = "http";

    /** SIP信令服务器IP或域名，默认 localhost */
    private String host = "localhost";

    /** 端口，默认 18080 */
    private Integer port = 18080;

    /** API基础路径，默认 /api */
    private String apiBasePath = "/api";

    /** 认证配置 */
    private AuthConfig auth = new AuthConfig();

    /**
     * 获取完整的基础URL
     * @return 基础URL
     */
    public String getBaseUrl() {
        return scheme + "://" + host + ":" + port + apiBasePath;
    }

    /**
     * 认证配置内部类
     */
    @Data
    public static class AuthConfig {
        /** 是否启用认证，默认true */
        private Boolean enabled = true;
        
        /** 认证类型：jwt 或 api-key，默认jwt */
        private String type = "jwt";
        
        /** JWT Token（长期有效token） */
        private String token;
        
        /** API Key（长期有效api key） */
        private String apiKey;
        
        /** JWT Token请求头名称，默认access-token */
        private String tokenHeader = "access-token";
        
        /** API Key请求头名称，默认api-key */
        private String apiKeyHeader = "api-key";
    }
}